找传奇、传世资源到传世资源站!

Sql&Oracle常用函數與語句

8.5玩家评分(1人评分)
下载后可评
介绍 评论 失效链接反馈

Sql&Oracle常用函數與語句from clipboard
ORACLE: select to_char(sysdate,'d') from dual  ---周几?SQL: datepart(weekday,convert(datetime,’2008/10/10’,111)) sql server 基本函数1. 字符串函数datalength(Char_expr) 返回字符串包含字符数,但不包含后面的空格
substring(expression,start,length) 不多说了,取子串
right(char_expr,int_expr) 返回字符串右边
int_expr个字符字符操作类
upper(char_expr) 转为大写
lower(char_expr) 转为小写
space(int_expr) 生成int_expr个空格
replicate(char_expr,int_expr)复制字符串int_expr次
reverse(char_expr) 反转字符串
stuff(char_expr1,start,length,char_expr2) 将字符串char_expr1中的从
start开始的length个字符用char_expr2代替
ltrim(char_expr) rtrim(char_expr) 取掉空格
ascii(char) char(ascii) 两函数对应,取ascii码,根据ascii吗取字符字符串查找
charindex(char_expr,expression) 返回char_expr的起始位置
patindex("%pattern%",expression) 返回指定模式的起始位置,否则为0

2.数学函数
abs(numeric_expr) 求绝对值
ceiling(numeric_expr) 取大于等于指定值的最小整数
exp(float_expr) 取指数
floor(numeric_expr) 小于等于指定值得最大整数
pi() 3.1415926.........
power(numeric_expr,power) 返回power次方
rand([int_expr]) 随机数产生器
round(numeric_expr,int_expr) 安int_expr规定的精度四舍五入
sign(int_expr) 根据正数,0,负数,,返回 1,0,-1
sqrt(float_expr) 平方根
AVG 求平均值
COUNT统计数目
MAX求最大值
MIN 求最小值
SUM求和
3.日期函数 
getdate() 返回日期
datename(datepart,date_expr) 返回名称如 June
datepart(datepart,date_expr) 取日期一部份
datediff(datepart,date_expr1.dateexpr2) 日期差
dateadd(datepart,number,date_expr) 返回日期加上number述函数中datepart的
写法 取值和意义
yy 1753-9999 年份     qq 1-4 刻     mm 1-12 月     dy 1-366 日     
dd 1-31 日           wk 1-54 周    dw 1-7 周几     hh 0-23 小时
mi 0-59 分钟         ss 0-59 秒     ms 0-999 毫秒
4.数据类型转换函数
CAST() 函数语法如下
CAST() (<expression> AS <data_ type>[ length ])
CONVERT() 函数语法如下
CONVERT() (<data_ type>[ length ], <expression> [, style])5.系统函数
suser_name() 用户登录名
user_name() 用户在数据库中的名字
user 用户在数据库中的名字
show_role() 对当前用户起作用的规则
db_name() 数据库名
object_name(obj_id) 数据库对象名
col_name(obj_id,col_id) 列名
col_length(objname,colname) 列长度
valid_name(char_expr) 是否是有效标识符
APP_NAME() --函数返回当前执行的应用程序的名称
COALESCE() --函数返回众多表达式中第一个非NULL 表达式的值
COL_LENGTH(<'table_name'>, <'column_name'>) --函数返回表中指定字段的长度值
COL_NAME(<table_id>, <column_id>) --函数返回表中指定字段的名称即列名
DATALENGTH() --函数返回数据表达式的数据的实际长度
DB_ID(['database_name']) --函数返回数据库的编号
DB_NAME(database_id) --函数返回数据库的名称
HOST_ID() --函数返回服务器端计算机的名称
HOST_NAME() --函数返回服务器端计算机的名称
IDENTITY(<data_type>[, seed increment]) [AS column_name])
--IDENTITY() 函数只在SELECT INTO 语句中使用用于插入一个identity column列到新表中
ISDATE() --函数判断所给定的表达式是否为合理日期
ISNULL(<check_expression>, <replacement_value>) --函数将表达式中的NULL 值用指定值替换
ISNUMERIC() --函数判断所给定的表达式是否为合理的数值
NEWID() --函数返回一个UNIQUEIDENTIFIER 类型的数值
NULLIF(<expression1>, <expression2>)
--NULLIF 函数在expression1 expression2 相等时返回NULL 值若不相等时则返回expression1 的值
--数据操作
SELECT --从数据库表中检索数据行和列
INSERT --向数据库表添加新数据行
DELETE --从数据库表中删除数据行
UPDATE --更新数据库表中的数据
--数据定义
CREATE TABLE --创建一个数据库表
DROP TABLE --从数据库中删除表
ALTER TABLE --修改数据库表结构
CREATE VIEW --创建一个视图
DROP VIEW --从数据库中删除视图
CREATE INDEX --为数据库表创建一个索引
DROP INDEX --从数据库中删除索引
CREATE PROCEDURE --创建一个存储过程
DROP PROCEDURE --从数据库中删除存储过程
CREATE TRIGGER --创建一个触发器
DROP TRIGGER --从数据库中删除触发器
CREATE SCHEMA --向数据库添加一个新模式
DROP SCHEMA --从数据库中删除一个模式
CREATE DOMAIN --创建一个数据值域
ALTER DOMAIN --改变域定义
DROP DOMAIN --从数据库中删除一个域
--数据控制
GRANT --授予用户访问权限
DENY --拒绝用户访问
REVOKE --解除用户访问权限
--事务控制
COMMIT --结束当前事务
ROLLBACK --中止当前事务
SET TRANSACTION --定义当前事务数据访问特征
--程序化SQL
DECLARE --为查询设定游标
EXPLAN --为查询描述数据访问计划
OPEN --检索查询结果打开一个游标
FETCH --检索一行查询结果
CLOSE --关闭游标
PREPARE --为动态执行准备SQL 语句
EXECUTE --动态地执行SQL 语句
DESCRIBE --描述准备好的查询
---局部变量
declare @id char(10)
--set @id = '10010001'
select @id = '10010001'
---全局变量
---必须以@@开头
--IF ELSE
declare @x int @y int @z int
select @x = 1 @y = 2 @z=3
if @x > @y
print 'x > y' --打印字符串'x > y'
else if @y > @z
else print 'z > y'
--CASE
update employee
set e_wage =
case
when job_level = ’1’ then e_wage*1.08
when job_level = ’2’ then e_wage*1.07
when job_level = ’3’ then e_wage*1.06
else e_wage*1.05
end
--WHILE CONTINUE BREAK
declare @x int @y int @c int
select @x = 1 @y=1
while @x < 3
begin
print @x --打印变量x 的值
while @y < 3
begin
select @c = 100*@x @y
print @c --打印变量c 的值
select @y = @y 1
end
select @x = @x 1
select @y = 1
end
--WAITFOR
--例 等待1 小时2 分零3 秒后才执行SELECT 语句
waitfor delay ’01:02:03’
select * from employeesql server存储过程语法    存储过程就是作为可执行对象存放在数据库中的一个或多个SQL命令
    定义总是很抽象存储过程其实就是能完成一定操作的一组SQL语句,只不过这组语句是放在数据库中的﹐具體用處理可分為﹕第一、大大提高效率存储过程本身的执行速度非常快,而且,调用存储过程可以大大减少同数据库的交互次数
  第二、提高安全性 
  第三、有利于SQL语句的重用
 1. 只返回单一记录集的存储过程CREATE PROCEDURE dbo.getUserList  as
set nocount on
begin
select * from dbo.[userinfo]
end   
  2. 没有输入输出的存储过程
       CREATE PROCEDURE dbo.delUserAll       as
    set nocount on
    begin
       delete from dbo.[userinfo]
    end
    go   3. 有返回值的存储过程
       CREATE PROCEDURE dbo.delUserAll   as
    set nocount on
    begin
       BEGIN TRANSACTION
       delete from dbo.[userinfo]
       IF @@error=0
          begin
             COMMIT TRANSACTION
             return 1
          end
       else
          begin
             ROLLBACK TRANSACTION
             return 0
          end        
       return
    end
    go       4. 有输入参数和输出参数的存储过程
     CREATE PROCEDURE dbo.getUserName(      @UserID int,       @UserName varchar(40) output )    as
    set nocount on
    begin
       if @UserID is null return
       select @UserName=username
           from dbo.[userinfo]where userid=@UserID
       return
    end
    go5. 同时具有返回值、输入参数、输出参数的存储过程
注意:如果存储过程同时具有返回值以及输入、输出参数,返回值要最先声明CREATE PROCEDURE dbo.getUserName(@UserName varchar(40) output, @UserID int) Asset nocount onbeginif @UserID is null returnselect @UserName=usernamefrom dbo.[userinfo]where userid=@UserIDif @@rowcount>0return 1  else  return 06. 同时返回参数和记录集的存储过程CREATE PROCEDURE dbo.getUserList( @iPageCount int OUTPUT, @iPage int, @iPageSize int) as
set nocount on
begincreate table #t (ID int IDENTITY, userid int,username varchar(40))insert into #tselect userid,username from dbo.[UserInfo] order by useriddeclare @iRecordCount intset @iRecordCount = @@rowcountIF @iRecordCount%@iPageSize=0SET @iPageCount=CEILING(@iRecordCount/@iPageSize)ELSESET @iPageCount=CEILING(@iRecordCount/@iPageSize) 1IF @iPage > @iPageCountSELECT @iPage = @iPageCountDECLARE @iStart int    --start recordDECLARE @iEnd int      --end recordSELECT @iStart = (@iPage - 1) * @iPageSizeSELECT @iEnd = @iStart @iPageSize 1select * from #t where ID>@iStart and ID<@iEndDROP TABLE #treturn @iRecordCountend
go
 7. 返回多个记录集的存储过程CREATE PROCEDURE dbo.getUserInfo( @userid int,@checklogin bit) as
 set nocount on
 begin
 if @userid is null or @checklogin is null return
 select username
 from dbo.[usrinfo] where userid=@userid
 if @checklogin=1
 select usertel,usermail
 from dbo.[userinfo]
where userid=@userid
 return
endgooracle常用函数SQL中的单记录函数
1.ASCII
返回与指定的字符对应的十进制数;
SQL> select ascii('A') A,ascii('a') a,ascii('0') zero,asci     i(' ') space from dual;
2.CHR
给出整数,返回对应的字符;
SQL> select chr(54740) zhao,chr(65) chr65 from dual;3.CONCAT
连接两个字符串;
SQL> select concat('010-','88888888')||'转23'  高乾竞电话form dual;4.INITCAP
返回字符串并将字符串的第一个字母变为大写;
SQL> select initcap('smith') upp from dual;
5.INSTR(C1,C2,I,J)在一个字符串中搜索指定的字符,返回发现指定的字符的位置;
C1    被搜索的字符串
C2    希望搜索的字符串
I     搜索的开始位置,默认为1
J     出现的位置,默认为1
SQL> select instr('oracle traning','ra',1,2) instring from dual;
6.LENGTH
返回字符串的长度;
SQL> select name,length(name),addr,length(addr),sal,length(to_char(sal)) from gao.nchar_tst;7.LOWER
返回字符串,并将所有的字符小写
SQL> select lower('AaBbCcDd')AaBbCcDd from dual;
8.UPPER
返回字符串,并将所有的字符大写
SQL> select upper('AaBbCcDd') upper from dual;9.RPAD和LPAD(填充字符)
RPAD  在列的右边粘贴字符
LPAD  在列的左边粘贴字符
SQL> select lpad(rpad('gao',10,'*'),17,'*')from dual;10.LTRIM和RTRIM
LTRIM  删除左边出现的字符串
RTRIM  删除右边出现的字符串
SQL> select ltrim(rtrim('   gao qian jing   ',' '),' ') from dual;
11.SUBSTR(string,start,count)
取子字符串,从start开始,取count个
SQL> select substr('13088888888',3,8) from dual;
12.REPLACE('string','s1','s2')
string   希望被替换的字符或变量
s1       被替换的字符串
s2       要替换的字符串
SQL> select replace('he love you','he','i') from dual;
13.SOUNDEX
返回一个与给定的字符串读音相同的字符串
SQL> create table table1(xm varchar(8));
SQL> insert into table1 values('weather');
SQL> insert into table1 values('wether');
SQL> insert into table1 values('gao');SQL> select xm from table1 where soundex(xm)=soundex('weather');14.TRIM('s' from 'string')
LEADING   剪掉前面的字符
TRAILING  剪掉后面的字符
如果不指定,默认为空格符15.ABS
返回指定值的绝对值
SQL> select abs(100),abs(-100) from dual;
16.ACOS
给出反余弦的值
SQL> select acos(-1) from dual;
17.ASIN
给出反正弦的值
SQL> select asin(0.5) from dual;
18.ATAN
返回一个数字的反正切值
SQL> select atan(1) from dual;
19.CEIL
返回大于或等于给出数字的最小整数
SQL> select ceil(3.1415927) from dual;
20.COS
返回一个给定数字的余弦
SQL> select cos(-3.1415927) from dual;
21.COSH
返回一个数字反余弦值
SQL> select cosh(20) from dual;
22.EXP
返回一个数字e的n次方根
SQL> select exp(2),exp(1) from dual;
23.FLOOR
对给定的数字取整数
SQL> select floor(2345.67) from dual;
24.LN
返回一个数字的对数值
SQL> select ln(1),ln(2),ln(2.7182818) from dual;
25.LOG(n1,n2)
返回一个以n1为底n2的对数 
SQL> select log(2,1),log(2,4) from dual;
26.MOD(n1,n2)
返回一个n1除以n2的余数
SQL> select mod(10,3),mod(3,3),mod(2,3) from dual;
27.POWER
返回n1的n2次方根
SQL> select power(2,10),power(3,3) from dual;
28.ROUND和TRUNC
按照指定的精度进行舍入
SQL> select round(55.5),round(-55.4),trunc(55.5),trunc(-55.5) from dual;
29.SIGN
取数字n的符号,大于0返回1,小于0返回-1,等于0返回0
SQL> select sign(123),sign(-100),sign(0) from dual;
30.SIN
返回一个数字的正弦值
SQL> select sin(1.57079) from dual;
31.SIGH
返回双曲正弦的值
SQL> select sin(20),sinh(20) from dual;
32.SQRT
返回数字n的根
SQL> select sqrt(64),sqrt(10) from dual;
33.TAN
返回数字的正切值
SQL> select tan(20),tan(10) from dual;
34.TANH
返回数字n的双曲正切值
SQL> select tanh(20),tan(20) from dual;35.TRUNC
按照指定的精度截取一个数
SQL> select trunc(124.1666,-2) trunc1,trunc(124.16666,2) from dual;36.ADD_MONTHS
增加或减去月份
SQL> select to_char(add_months(to_date('199912','yyyymm'),2),'yyyymm') from dual;
SQL> select to_char(add_months(to_date('199912','yyyymm'),-2),'yyyymm') from dual;
37.LAST_DAY
返回日期的最后一天
SQL> select to_char(sysdate,'yyyy.mm.dd'),to_char((sysdate) 1,'yyyy.mm.dd') from dual;
SQL> select last_day(sysdate) from dual;
38.MONTHS_BETWEEN(date2,date1)
给出date2-date1的月份
SQL> select months_between('19-12月-1999','19-3月-1999') mon_between from dual;
SQL>selectmonths_between(to_date('2000.05.20','yyyy.mm.dd'),to_date('2005.05.20','yyyy.mm.dd')) mon_betw from dual;
39.NEW_TIME(date,'this','that')
给出在this时区=other时区的日期和时间
SQL> select to_char(sysdate,'yyyy.mm.dd hh24:mi:ss') bj_time,to_char(new_time  2  (sysdate,'PDT','GMT'),'yyyy.mm.dd hh24:mi:ss') los_angles from dual
40.NEXT_DAY(date,'day')
给出日期date和星期x之后计算下一个星期的日期
SQL> select next_day('18-5月-2001','星期五') next_day from dual;41.SYSDATE
用来得到系统的当前日期
SQL> select to_char(sysdate,'dd-mm-yyyy day') from dual;
trunc(date,fmt)按照给出的要求将日期截断,如果fmt='mi'表示保留分,截断秒
SQL> select to_char(trunc(sysdate,'hh'),'yyyy.mm.dd hh24:mi:ss') hh,” 2” to_char(trunc(sysdate,'mi'),'yyyy.mm.dd hh24:mi:ss') hhmm from dual;42.CHARTOROWID
将字符数据类型转换为ROWID类型
SQL> select rowid,rowidtochar(rowid) from dual;
43.CONVERT(c,dset,sset)
将源字符串 sset从一个语言字符集转换到另一个目的dset字符集
SQL> select convert('strutz','we8hp','f7dec') "conversion" from dual;
44.HEXTORAW
将一个十六进制构成的字符串转换为二进制
45.RAWTOHEXT
将一个二进制构成的字符串转换为十六进制46.ROWIDTOCHAR
ROWID数据类型转换为字符类型47.TO_CHAR(date,'format')將日期轉化為字符型
SQL> select to_char(sysdate,'yyyy/mm/dd hh24:mi:ss') from dual;48.TO_DATE(string,'format')
将字符串转化为ORACLE中的一个日期
49.TO_MULTI_BYTE
将字符串中的单字节字符转化为多字节字符
SQL>select to_multi_byte('高') from dual;
50.TO_NUMBER
将给出的字符转换为数字
SQL> select to_number('1999') year from dual;
51.BFILENAME(dir,file)
指定一个外部二进制文件
SQL>insert into file_tb1 values(bfilename('lob_dir1','image1.gif'));
52.CONVERT('x','desc','source')
x字段或变量的源source转换为desc
SQL> select sid,serial#,username,decode(command,
  2  0,'none',  3  2,'insert',  4  3,  5  'select',
  6  6,'update',  7  7,'delete',  8  8,'drop',
  9  'other') cmd  from v$session where type!='background';
53.DUMP(s,fmt,start,length)
DUMP函数以fmt指定的内部数字格式返回一个VARCHAR2类型的值
SQL> col global_name for a30
SQL> col dump_string for a50
SQL> set lin 200
SQL> select global_name,dump(global_name,1017,8,5) dump_string from global_name;
54.EMPTY_BLOB()和EMPTY_CLOB()
这两个函数都是用来对大数据类型字段进行初始化操作的函数55.GREATEST
返回一组表达式中的最大值,即比较字符的编码大小.
SQL> select greatest('AA','AB','AC') from dual;
SQL> select greatest('啊','安','天') from dual;
56.LEAST
返回一组表达式中的最小值
SQL> select least('啊','安','天') from dual;
57.UID
返回标识当前用户的唯一整数
SQL> select username,user_id from dba_users where user_id=uid;58.USER
返回当前用户的名字
SQL> select user from  dual;
59.USEREVN
返回当前用户环境的信息,opt可以是:
ENTRYID,SESSIONID,TERMINAL,ISDBA,LABLE,LANGUAGE,CLIENT_INFO,LANG,VSIZEISDBA  查看当前用户是否是DBA如果是则返回true
SQL> select userenv('isdba') from dual;
SQL> select userenv('isdba') from dual; 返回会话标志
SQL> select userenv('sessionid') from dual;

返回当前INSTANCE的标志
SQL> select userenv('instance') from dual;
返回当前环境变量
SQL> select userenv('language') from dual;
返回当前环境的语言的缩写
SQL> select userenv('lang') from dual;
TERMINAL
返回用户的终端或机器的标志
SQL> select userenv('terminal') from dual;
SQL> select vsize(user),user from dual;60.AVG(DISTINCT|ALL)
all表示对所有的值求平均值,distinct只对不同的值求平均值
SQLWKS> create table table3(xm varchar(8),sal number(7,2));
语句已处理。
SQLWKS>  insert into table3 values('gao',1111.11);
SQLWKS>  insert into table3 values('gao',1111.11);
SQLWKS>  insert into table3 values('zhu',5555.55);
SQLWKS> commit;SQL> select avg(distinct sal) from gao.table3;SQL> select avg(all sal) from gao.table3;
61.MAX(DISTINCT|ALL)
求最大值,ALL表示对所有的值求最大值,DISTINCT表示对不同的值求最大值,相同的只取一次
SQL> select max(distinct sal) from scott.emp;
62.MIN(DISTINCT|ALL)
求最小值,ALL表示对所有的值求最小值,DISTINCT表示对不同的值求最小值,相同的只取一次
SQL> select min(all sal) from gao.table3;
63.STDDEV(distinct|all)
求标准差,ALL表示对所有的值求标准差,DISTINCT表示只对不同的值求标准差
SQL> select stddev(sal) from scott.emp;SQL> select stddev(distinct sal) from scott.emp;64.VARIANCE(DISTINCT|ALL)
求协方差SQL> select variance(sal) from scott.emp;
65.GROUP BY
主要用来对一组数进行统计
SQL> select deptno,count(*),sum(sal) from scott.emp group by deptno;66.HAVING
对分组统计再加限制条件
SQL> select deptno,count(*),sum(sal) from scott.emp group by deptno having count(*)>=5;
SQL> select deptno,count(*),sum(sal) from scott.emp having count(*)>=5 group by deptno ;
67.ORDER BY
用于对查询到的结果进行排序输出
SQL> select deptno,ename,sal from scott.emp order by deptno,sal desc;

评论

发表评论必须先登陆, 您可以 登陆 或者 注册新账号 !


在线咨询: 问题反馈
客服QQ:174666394

有问题请留言,看到后及时答复